硬核干货:最近在深度研究 Claude code cli 源码

🔍 溯源 ✍️ Jason | 📅 2026-06-10 | 👍 1 | 原帖↗
#知识星球 #立芯嵌入式 #来源/立芯星球 #技术/Claude Code #质量/普通

原帖 | Jason | 2026-06-10 11:41 | 👍1 | 阅读约1

硬核干货:最近在深度研究 Claude code cli 源码,发现 hook 机制是可以用来给大家提效和客制化修改的,所以这里分享一下 Claude Code 核心 Hook。

在 Claude Code 中,Hook(钩子) 是一类预置的扩展入口,框架会在特定运行节点自动触发对应逻辑,开发者可自定义代码介入流程、拦截行为、增加能力,也是二次开发、个性化改造的核心切入点。

整套工具共 26 个内置 Hook,其中 SessionStart、PreToolUse、PostToolUse、Stop 是日常使用与定制开发里使用率最高的四个。

1. SessionStart 会话启动钩子
触发时机:每次新建对话/会话初始化时执行。
可改造用途:统一初始化环境、预设全局变量、加载专属配置、自动注入项目上下文、设置工作目录、加载项目脚本与规则。

2. PreToolUse 工具调用前置钩子
触发时机:AI 即将调用任意工具(命令行、文件读写、搜索、编辑等)之前执行。
可改造用途:权限校验、命令拦截、参数预处理、风险指令过滤、日志前置记录、修改工具入参、规范执行规则。

3. PostToolUse 工具调用后置钩子
触发时机:工具执行完成、返回结果后执行。
可改造用途:统一解析工具输出、结果格式化、异常捕获与告警、数据二次加工、执行日志汇总、清理临时文件。

4. Stop 会话终止钩子
触发时机:会话结束、手动停止/退出会话时执行。
可改造用途:自动保存会话记录、清理临时资源、关闭后台进程、统计会话数据、收尾归档、释放占用资源。

大家可以在 .claude/setting.json 配置你自己的 hook 要做什么,常用的方式是 command 命令型的 hook,让其执行一个 shell 脚本。

我自己修改这些 hook,比如在 PreToolUse hook 拦截 rm -rf 危险命令,在 Stop hook 主动通过手机通知我任务完成,在 SessionStart hook 设置这个项目的环境变量。

这就是相当于在你没有修改 Claude code cli 源码的情况下,影响这个 harness 的行为,所以 hook 是各家做自己 agent 工具时客制化的核心修改场景。


相关笔记